/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package model.funcionario;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import model.contato.Contato;
import model.encomendaproduto.EncomendaProduto;
import model.endereco.Endereco;
import model.heranca.Pessoa;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
/**
 *
 * @author Marcos
 */
@Entity
public class Funcionario extends Pessoa implements Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int codigo;
    @Column(name = "salario", nullable = false)
    private double salario;
    @Column(name = "funcao", length = 70, nullable = false)
    private String funcao;
    @Temporal(TemporalType.DATE)
    @Column(name = "data_admissao", nullable = true)
    private Date dataAdmissao;
    private Endereco endereco;
    private Contato contato;
    @OneToOne(mappedBy = "funcionario")
    @Cascade(CascadeType.ALL)
    private EncomendaProduto encomenda;

    public EncomendaProduto getEncomenda() {
        return encomenda;
    }

    public void setEncomenda(EncomendaProduto encomenda) {
        this.encomenda = encomenda;
    }
    
    
    
    public Funcionario(){
        this.endereco = new Endereco();
        this.contato = new Contato();
    }
    
    
    public Funcionario(String funcao){
        
        this.funcao = funcao;
        this.endereco = new Endereco();
        this.contato = new Contato();
    }
    
    
    public Funcionario(String cpf, int codigo){
        this.codigo = codigo;
        super.setCpf(cpf);
    }
    
    
    public Endereco getEndereco(){
        return endereco;
    }
    
    public Contato getContato(){
        return contato;
    }

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public double getSalario() {
        return salario;
    }

    public void setSalario(double salario) {
        this.salario = salario;
    }

    public String getFuncao() {
        return funcao;
    }

    public void setFuncao(String funcao) {
        this.funcao = funcao;
    }

    public Date getDataAdmissao() {
        return dataAdmissao;
    }

    public void setDataAdmissao(Date dataAdmissao) {
        this.dataAdmissao = dataAdmissao;
    }
}
